﻿///////////////////////////////////////////////////////////////////////////////
// 文件名： EventDelegate.hpp
// 作者：   671643387@qq.com
// 日期：   2015年11月1日 下午8:50:54
// 简介：   
///////////////////////////////////////////////////////////////////////////////

#if !defined(GRAPHICS_GRAPHICS_EVENTDELEGATE_HPP_)
#define GRAPHICS_GRAPHICS_EVENTDELEGATE_HPP_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>

#include <graphics/graphics/render/RenderWindow.hpp>

namespace graphics
{
    class Root;

    class EventDelegate : public boost::noncopyable
    {
    public:
        EventDelegate(void){}
        ~EventDelegate(void){}

    public:
        virtual void OnPreCreateRenderWindow(::graphics::graphics::render::RenderWindow::stProperties& properties) = 0;
        virtual void OnRenderWindowCreated(::graphics::graphics::render::RenderWindow* window) = 0;
        virtual void OnRenderWindowShouldShow(::graphics::graphics::render::RenderWindow* window) = 0;
        virtual void OnRootInitialized(::graphics::Root* root) = 0;
    };

    typedef boost::shared_ptr<EventDelegate> EventDelegatePtr;
}

#endif //GRAPHICS_GRAPHICS_EVENTDELEGATE_HPP_
